package fr.upstlse.glre.client.administration.document.libelle.action;

import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.user.client.rpc.AsyncCallback;

import fr.upstlse.glre.client.administration.document.libelle.CreationLibellePanel;
import fr.upstlse.glre.client.utilitaires.ControlerUtil;
import fr.upstlse.glre.client.vo.depot.LibelleVOGWT;

public class CreateLibelleAction extends SelectionListener<ComponentEvent> {

	@Override
	public void componentSelected(ComponentEvent ce) {
		String lIntitule = CreationLibellePanel.getInstance().getLibelleFields().getIntitule().getValue();
		
		LibelleVOGWT lLibelleVOGWT = new LibelleVOGWT();
		lLibelleVOGWT.setIntitule(lIntitule);
		
		final MessageBox lWaitMessageBox = MessageBox.progress("Information",
				"Création du libellé", "création en cours...");
		AsyncCallback<Long> lAsyncCallback = new AsyncCallback<Long>() {

			public void onFailure(Throwable pCaught) {
				lWaitMessageBox.hide();
				MessageBox.alert("Erreur createLibelle", pCaught.getMessage(),
						null);
				
			}

			public void onSuccess(Long pResult) {
				lWaitMessageBox.hide();

				long lId = pResult.longValue();
				if (lId > 0) {
					Info.display("Information",
							"Libellé créé avec succès", "");
				} else {
					MessageBox.alert("Erreur", "Le libellé existe déjà",
							null);
				}
			}
		};
		ControlerUtil.getControlerServiceAsyncInstance().createLibelle(lLibelleVOGWT, lAsyncCallback);
		
	}

}
